#ifndef _SYS_CONST_ERR_H_
#define _SYS_CONST_ERR_H_

#include "Err.h"
#include "SysTypes.h"

#define CONST_ERR_VTABLE(self)   ((ConstErrVTable*)((FanObj*)self)->vtable)


extern Type*    ConstErr_classType;
extern VTable*  ConstErr_classVTable;


/* [sys::ConstErr] Attributes */
struct ConstErr
{
  Err           super;
};


/* [sys::ConstErr] Virtual-table */
typedef struct ConstErrVTable
{
  ErrVTable     super;
} ConstErrVTable;


/* [sys::ConstErr] Methods and fields */
void            ConstErr_make_0(ConstErr* self);
void            ConstErr_make_1(ConstErr* self, Str* msg);
void            ConstErr_make(ConstErr* self, Str* msg, Err* cause);


/* [sys::ConstErr] Extra methods */
ConstErr*       ConstErr_new(Str* msg, Err* cause);
ConstErr*       ConstErr_newWithFormattedMsg(const char* msgFormat, ...);


/* [sys::ConstErr] Type-system functions */
Type*           ConstErr_initType(void);
VTable*         ConstErr_initVTable(void);
void            ConstErr_initStatic(void);


#endif
